@echo off
setlocal enabledelayedexpansion
chcp 65001 >nul

REM Feng Admin 环境配置向导 (Windows)
REM 交互式创建和配置前后端 .env 文件

cls

echo ========================================
echo   Feng Admin - 环境配置向导
echo ========================================
echo.

REM 生成随机密钥的函数放在文件末尾

REM ==================== 后端环境配置 ====================

echo [1/2] 配置后端环境变量
echo.

set BACKEND_ENV=apps\backend\.env

if exist "%BACKEND_ENV%" (
    echo 检测到已存在后端 .env 文件
    set /p overwrite="是否覆盖现有配置? (y/N): "
    if /i not "!overwrite!"=="y" (
        echo 保留现有后端配置
        set SKIP_BACKEND=1
    )
)

if not "!SKIP_BACKEND!"=="1" (
    echo 请选择环境模式:
    echo   1. 开发环境 ^(development^)
    echo   2. 生产环境 ^(production^)
    set /p env_mode="请选择 (1-2) [1]: "
    if "!env_mode!"=="" set env_mode=1

    if "!env_mode!"=="2" (
        set FLASK_ENV=production
        set FLASK_DEBUG=False
        echo.
        echo 生产环境模式
    ) else (
        set FLASK_ENV=development
        set FLASK_DEBUG=True
        echo.
        echo 开发环境模式
    )

    echo.
    echo 生成安全密钥...
    for /f %%i in ('python -c "import secrets; print(secrets.token_hex(32))" 2^>nul') do set SECRET_KEY=%%i
    for /f %%i in ('python -c "import secrets; print(secrets.token_hex(32))" 2^>nul') do set JWT_SECRET_KEY=%%i
    
    REM 如果 Python 失败，使用备用方法
    if "!SECRET_KEY!"=="" (
        set SECRET_KEY=dev-secret-key-%RANDOM%%RANDOM%%RANDOM%
        set JWT_SECRET_KEY=jwt-secret-key-%RANDOM%%RANDOM%%RANDOM%
    )
    
    echo 密钥已生成
    
    echo.
    set /p jwt_expires="JWT Token 过期时间(小时) [24]: "
    if "!jwt_expires!"=="" set jwt_expires=24

    echo.
    if "!FLASK_ENV!"=="production" (
        echo 请配置 CORS 允许的域名
        echo 格式: https://domain1.com,https://domain2.com
        set /p cors_origins="CORS_ORIGINS: "
        if "!cors_origins!"=="" (
            set cors_origins=*
            echo 使用通配符 * ^(不推荐用于生产环境^)
        )
    ) else (
        set cors_origins=*
        echo 开发环境使用通配符 CORS
    )

    REM 创建后端 .env 文件
    (
        echo # Feng Admin 后端环境变量配置
        echo # 由环境配置向导自动生成于 %date% %time%
        echo.
        echo # ==================== 应用环境 ====================
        echo FLASK_ENV=!FLASK_ENV!
        echo FLASK_DEBUG=!FLASK_DEBUG!
        echo.
        echo # ==================== 安全密钥 ====================
        echo SECRET_KEY=!SECRET_KEY!
        echo JWT_SECRET_KEY=!JWT_SECRET_KEY!
        echo.
        echo # ==================== JWT 配置 ====================
        echo JWT_ACCESS_TOKEN_EXPIRES=!jwt_expires!
        echo JWT_REFRESH_TOKEN_EXPIRES=30
        echo.
        echo # ==================== CORS 配置 ====================
        echo CORS_ORIGINS=!cors_origins!
        echo.
        echo # ==================== 缓存配置 ====================
        echo GITHUB_TRENDING_CACHE_HOURS=4
        echo.
        echo # ==================== 日志配置 ====================
        echo LOG_LEVEL=INFO
    ) > "%BACKEND_ENV%"

    echo.
    echo 后端环境配置已创建: %BACKEND_ENV%
)

echo.
echo.

REM ==================== 前端环境配置 ====================

echo [2/2] 配置前端环境变量
echo.

set FRONTEND_ENV=apps\frontend\.env

if exist "%FRONTEND_ENV%" (
    echo 检测到已存在前端 .env 文件
    set /p overwrite="是否覆盖现有配置? (y/N): "
    if /i not "!overwrite!"=="y" (
        echo 保留现有前端配置
        set SKIP_FRONTEND=1
    )
)

if not "!SKIP_FRONTEND!"=="1" (
    echo 后端 API 地址配置:
    echo.
    
    if "!FLASK_ENV!"=="production" (
        echo   示例: https://api.yourdomain.com
        set /p api_url="请输入后端 API 地址: "
        if "!api_url!"=="" (
            set api_url=http://localhost:5001
            echo 使用默认地址
        )
    ) else (
        set api_url=http://localhost:5001
        echo 使用本地开发地址: !api_url!
    )

    REM 创建前端 .env 文件
    (
        echo # Feng Admin 前端环境变量配置
        echo # 由环境配置向导自动生成于 %date% %time%
        echo.
        echo # ==================== API 配置 ====================
        echo VITE_API_BASE_URL=!api_url!
        echo.
        echo # ==================== 应用配置 ====================
        echo VITE_APP_TITLE=Feng Admin
        echo VITE_APP_VERSION=1.0.0
        echo.
        echo # ==================== 功能开关 ====================
        echo VITE_ENABLE_DEV_TOOLS=true
        echo VITE_ENABLE_LOGGING=true
    ) > "%FRONTEND_ENV%"

    echo.
    echo 前端环境配置已创建: %FRONTEND_ENV%
)

echo.
echo.
echo ========================================
echo   环境配置完成！
echo ========================================
echo.

if not "!SKIP_BACKEND!"=="1" (
    echo 后端配置文件: %BACKEND_ENV%
)

if not "!SKIP_FRONTEND!"=="1" (
    echo 前端配置文件: %FRONTEND_ENV%
)

echo.
echo 提示:
echo   - 可以手动编辑 .env 文件进行更多配置
echo   - 查看 env.example 文件了解所有可用选项
echo   - 生产环境请务必使用强密钥和HTTPS
echo.

if "!FLASK_ENV!"=="production" (
    echo 生产环境安全检查清单:
    echo   [ ] 已设置强随机密钥
    echo   [ ] 已配置具体的 CORS 域名
    echo   [ ] 已配置 HTTPS
    echo   [ ] 已关闭调试模式
    echo   [ ] 已配置生产数据库
    echo.
)

echo 按任意键退出...
pause >nul

